﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace PluginOpisTxt
{
    public class PluginOpisTxt:Cataloger.Plugins.IPlugin
    {


        #region IPlugin Members
        public PluginOpisTxt()
        {
            rozszerzenia.Add(".txt",true);
            rozszerzenia.Add(".nfo", true);
            rozszerzenia.Add(".rtf", true);
            Slowa = new HashSet<string>();

        }
        public HashSet<string> Slowa
        {
            get;
            set;
        }
        public string Autor
        {
            get { return "Paweł Stasiak"; }
        }

        public string Opis
        {
            get { return "Plugin pobiera tekst z plików tekstowych wg. podanych kryteriów. Może przydać się przy pobieraniu kluczy do produktów lub opisów filmów muzyki znajdujących się w plikach .nfo"; }
        }

        public string Wersja
        {
            get { return "1.0.0"; }
        }

        public string Nazwa
        {
            get { return "Plugin tekst z pliku"; }
        }

        public string OpisToolTip
        {
            get { return Opis ;
            }
        }
        public long Rozmiar
        {
            get;
            set;
        }
        public void Konfiguruj()
        {
            Form1 f1 = new Form1(Rozszerzenia,Slowa);
            if (f1.ShowDialog() == DialogResult.OK)
            {
                foreach (KeyValuePair<string, bool> item in f1.pofiice)
                {
                    Rozszerzenia[item.Key] = item.Value;
                }
                this.Slowa = f1.Slowa;
                this.Rozmiar = f1.RozmiarWbajtach;

            }
        }
        Dictionary<string, bool> rozszerzenia = new Dictionary<string, bool>();
        public Dictionary<string, bool> Rozszerzenia
        {
            get { return rozszerzenia; }
        }

        public bool UstawOpis(Cataloger.Plik p, System.IO.FileInfo path)
        {
            foreach (KeyValuePair<string, bool> item in Rozszerzenia)
            {
                if (item.Key == path.Extension.ToLower() && item.Value == true)
                {
                    if (this.Rozmiar > 0)
                    {
                        if (path.Length < Rozmiar)
                        {
                            if (Slowa.Count > 0)
                            {
                                string op = File.ReadAllText(path.FullName, Encoding.Default);
                                foreach (string slowo in Slowa)
                                {
                                    if (op.Contains(slowo))
                                    {
                                        p.Opis += File.ReadAllText(path.FullName, Encoding.Default);
                                        return true;
                                        break;
                                    }
                                }
                                return false;
                            }
                            else
                            {
                                p.Opis += File.ReadAllText(path.FullName, Encoding.Default);
                                return true;
                                break;
                            }
                        }
                    }
                    else
                    {
                        if (Slowa.Count > 0)
                        {
                            string op = File.ReadAllText(path.FullName, Encoding.Default);
                            foreach (string slowo in Slowa)
                            {
                                if (op.Contains(slowo))
                                {
                                    p.Opis += File.ReadAllText(path.FullName, Encoding.Default);
                                    return true;
                                    break;
                                }
                            }
                            return false;
                            break;
                        }
                        else
                        {
                            p.Opis += File.ReadAllText(path.FullName, Encoding.Default);
                            return true;
                            break;
                        }

                    }
                }
            }
            return false;
    
        }

        #endregion
    }
}
